'''
异常处理
'''

'''
    异常处理机制：
        try
            ...可能出错的代码
        except - 捕捉异常，需要指定异常类型
            ...出错时要执行的代码
            ...可以有多个except语句,父类要写在子类的后面
        finally
            ...必须要执行的代码

        保证程序在出错的行情况下仍然能够执行
'''
try: # 将所有可能出错的代码放在try代码块中
    print('开始运行程序')

    r = 10 / int('abc')
    # r = 10 / int('0')
    '''
    调用栈信息
    Traceback (most recent call last):
    File "d:/workspace/python/day06/demo02_异常处理.py", line 7, in <module>
        r = 10 / 0
    错误类型(数据类型)  错误信息(出错的原因)
    ZeroDivisionError: division by zero
    '''
    print('r=%d'%r)
except ZeroDivisionError as e: # 出错时要执行的代码
    print('除零错误：',e)
except ValueError as e: # 可以有多个except语句
    print('值错误:',e)
except Exception as e: # 父类要写在子类的后面
    print('异常：',e)
finally:    #总是要执行的代码
    print('程序运行结束')